package com.example.mails;

import com.example.utils.BasicUtils;
import org.apache.commons.mail.Email;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;

/**
 * 普通文本邮件类，用于表示和处理简单的文本邮件。
 * 功能包括：
 * - 设置邮件主题
 * - 设置收件人
 * - 设置邮件正文
 *
 * @author [你的名字]
 * @version 1.0
 */
public class SnailMail {
    public static void main(String[] args) {
        String title = "测试邮件";
        String content = "测试邮件，请忽略";
        String sender = "zhloveway@yeah.net";
        String password = "VISXBEDHEBEFGTZL";
        String[] toEmail = {"zh_sellers@yeah.net", "zh_sellers@aliyun.com"};
        String[] csEmail = {};// { "zh_sellers@yeah.net", "zh_sellers@aliyun.com" };
        sendEmail(title, content, sender, password, toEmail, csEmail);
    }

    /**
     * 发送简单文本邮件
     *
     * @param title    邮件标题
     * @param content  邮件内容
     * @param sender   发件人邮箱
     * @param password 发件人邮箱密码
     * @param toEmail  收件人邮箱数组
     * @param csEmail  抄送人邮箱数组
     */
    public static void sendEmail(String title, String content, String sender, String password, String[] toEmail,
                                 String[] csEmail) {
        // 创建邮件对象
        Email email = new SimpleEmail();
        // 设置SMTP服务器
        email.setHostName("smtp.yeah.net");
        // 设置SMTP端口，通常是465或587
        // email.setSmtpPort(465);
        // 如果需要SSL连接，则设置为true
        // email.setSSLOnConnect(true);
        // 设置发件人邮箱和密码
        email.setAuthentication(sender, password);
        email.setCharset("UTF-8");//编码格式
        // 设置发送源邮箱
        try {
            email.setFrom(sender);
            // 检查收件人邮箱地址数组是否为空，如果不为空则设置收件人，如果为空则抛出异常
            if (BasicUtils.isEmptys(toEmail) != false) {
                // 设置收件人邮箱
                email.addTo(toEmail);
                try {
                    throw new Exception("请设置收件人邮箱地址");
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }
            // 检查抄送人邮箱地址数组是否为空，如果不为空则设置抄送人，如果为空则抛出异常
            if (BasicUtils.isEmptys(csEmail) != false) {
                // 设置抄送人邮箱
                email.addCc(toEmail);
                try {
                    throw new Exception("请设置抄送人邮箱地址");
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }
            // 设置邮件主题
            email.setSubject(title);
            // 设置邮件内容
            email.setMsg(content);
            // 发送邮件
            email.send();
            System.out.println("邮件发送成功！");
        } catch (EmailException e) {
            e.printStackTrace();
            System.out.println("邮件发送失败！");
        }
    }


}

